1. Field
The present application relates generally to communications, and more specifically to prioritizing transmission control protocol (TCP) flows for communication devices in a network.
2. Background
Communication systems are widely deployed to provide various types of communication (e.g., voice, data, multimedia services, etc.) between communication devices (e.g., mobile handsets, PDAs (Personal Data Assistants), personal computers, smart phones, servers, or any other electronic device capable of communicating via a network). The devices may transmit/receive data between each other via a network of interconnected devices. The data may be sent as different sets of data referred to as flows. For example, communication of a first video stream between a device and another device may be referred to as a first flow, and communication of data packets for a web page between a device and another device may be referred to as a second flow. These data flows may each be associated with a particular application running on the communications device.
Further, the devices are interconnected by wired or wireless connections. The devices may access one or more of these connections via one or more network interfaces. These connections and/or network interfaces may have a finite amount of bandwidth that they are capable of handling. Therefore, there may be a finite available amount of bandwidth for a device to use to communicate. Accordingly, when multiple flows request to use the available bandwidth, the bandwidth can be distributed between flows. Communication of flows of data in the network and allocation of bandwidth to the flows is handled in part by the transmission control protocol (TCP).
Typically, TCP distributes the available bandwidth evenly between the flows. However, different flows may have different minimum throughput requirements and different maximum desired throughputs in order for the application to work well. For example, a video stream flow may require a minimum bandwidth in order for the video to playback in the application smoothly and accurately. Merely evenly distributing available bandwidth between the flows does not ensure the video stream flow is allocated the required minimum bandwidth. Even when minimum and maximum throughput requirements of different flows are equal or unknown, the user may have specific interest in one flow. For example, when a flow is in foreground, the user may pay attention to the respective application, and therefore may desire prioritization of that flow. More generally, different flows may have different requirements, for example intrinsic requirements based on the nature of each flow, or relative to the context in which the device is used. Thus, enhanced systems and methods of bandwidth between flows are needed.